home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-08-14 | 73.0 KB | 1,561 lines |
- *****************************************************************************
- * *
- * Documentation for the BeerMon V0.46c farewell release. Date: 18-Jun-93 *
- * *
- * - (C) 1990,1991,1992,1993 by Carnivore/BeerMacht *
- * *
- * "With my art I am the fist in the face of god" *
- * *
- * DISCLAIMER *
- * *
- * This program is FREEWARE, this means that you can copy it freely as long *
- * as you don't ask any more money for it than a nominal fee for copying. *
- * If you want to distribute this program you should keep this document and *
- * the schematics with it. This program cannot be used for commercial *
- * purposes without written permission from the author. The author is not *
- * responsible for any loss of data, damages to software or hardware that *
- * may result directly or indirectly from the use of this program. *
- * *
- * *
- * *
- * NOTE: This seems to be the LAST version of the BeerMon written by myself *
- * ---- as any further motivation ceased to exist. Anybody may feel invited *
- * to continue working on the source if he/she likes to do so. *
- * The only thing I ask for is that I get some credits for the work I *
- * did if you intend to release an improved version or use parts of my *
- * sourcecode within your own productions. (And you may even spend *
- * me a beer if we happen to meet someday somewhere :-) *
- * *
- *****************************************************************************
-
- It is done. The BEERMACHT presents the BeerMon, which seems to contain some
- outstanding features other known monitors don't have. Any hints, comments,
- bug reports or opinions are highly appreciated and can be made in those
- german BBS the users "BEERMACHT" or "CARNIVORE" appear in, prefered in
- these ones:
-
- INTERFACE +49 208 xxxxx (get the numbers somewhere)
- or THE CAULDRON +49 202 xxxxx (get the number somewhere)
- or LAST RESORT +49 211 xxxxx (get the numbers somewhere)
- or BEERKRUG +49 2102 xxxxxx (just for very private usership)
- or PUNGENT STENCH +49 2102 xxxxxx (even more private usership :-)
-
- Now let's start with the documentation...
- The BeerMon is another kind of monitor compared to those of the past like
- C-monitor, Amon, etc. He is a monitor of the nasty type because he makes no
- use of any library, device or even Kickstart stuff, in fact you may rip out
- the Kickstart ROM once the BeerMon is running. The BeerMon includes a full
- screen editor which is of use in most cases. So if you got the taste of gore
- now here's the most important thing. If you build the hardware add-on which
- is described in the schematics you are able to break any program just with
- reset and you are able to access any byte of memory untouched. This works
- because the hardware contains expansion memory in which backup of workspace
- memory is moved. Into this memory expansion the monitor can be loaded by
- executing the "init"-command on this disk. If you aren't able to build this
- board (blame on you), you could also use the BeerMon with in some cases
- reduced capabilities. The executable is completely position independent
- and may be started just by JMPing to the startaddress to which he has been
- loaded. Or you set this funky bus error vector at $8 with the exception
- entry of the BeerMon and the magic button (see schematics) brings you to
- paradise. Well, this should only be a hint how to be more powerful than
- only starting the BeerMon from CLI, which is also possible but not the most
- advanced and consistent method. Note the fact, that the BeerMon has never
- been designed for CLI usage and therefor may have some disadvantages when
- you return to the CLI. So the choice is yours...
-
- ························· SUMMARY OF CHANGES ······························
-
- - CHANGES made until V0.46c (jun 1993)
-
- - added support for different display modes. Currently the following modes
- may be selected:
- Name [dimensions] vert.freq. hor.freq. requirements
- - PAL [640×256] 50Hz 15KHz -
- - PAL [640×512] 50Hz 15KHz -
- - NTSC [640×200] 60Hz 15KHz -
- - NTSC [640×400] 60Hz 15KHz -
- - VGA [640×480] 60Hz 31KHz ECS Agnus&Denise, VGA Monitor
-
- - removed a bug in the soundplay interrupt routine, which crept into V0.45.
- - BMPE updated to V0.14 using GadToolsBox 2.0
- - redesigned 'Mode' cycle gadget.
- - the cycle gadgets now behave the standard way (thanx to Fakebuster :-)
- - and yes, finally the complete sourcecode (BMsourcecode.lha) is included!
-
- - CHANGES made until V0.45 (mar 1993)
-
- - the BeerMon automagically handles ECS/AGA differences. Patching is no
- longer needed to obtain a special BeerMon version for AGA chipsets.
- - removed an ancient bug in disk drive startup code.
- - the disk drive heads are repositioned before leaving the BeerMon.
- - removed obsolete check for $aabb at offset 8 of the header when sending
- SNES/MD data to Super Magicom copier (as requested by 6Pack .-).
- - on startup and after every warmstart ('go' command etc.) the BeerMon code
- and static data are checked for modification. If something is wrong a
- corresponding message informs you about this situation.
- - the command 'S' checks if the file would fit on the current disk and only
- saves data, if there is enough free space.
- - the internal mfm-routines were optimised and provide faster block and
- file operations now.
- - added command 'verify' which toggles disk verify on and off.
- - all dos-related operations now allow the user to select between retry,
- ignore and abort, if a read or write error occured. Please note, that if
- a write error disappeares after a retry operation, it's likely that the
- defective area of the disk now is within the unused mfm gap and may show
- again the next time you attempt to write to this track.
- - added command 'custom', which displays a list with addresses and the
- corresponding names of the custom chip registers
- - fixed BRK instruction in 6502/65SC802/65SC816 assembler and disassembler.
- In fact this is a 2-byte instruction with immediate byte operand now.
- Note that on the 6502 this was just a 1-byte instruction.
- - implemented 'reserved' instruction $42 of 6502/65SC802/65SC816 assembler
- and disassembler as 'wdm' with immediate byte operand. That's how it was
- described in a textfile I recently read.
- - the 6502/65SC802/65SC816 disassembler now comments the special SNES
- hardware registers.
- - the exception handler now knows about additional MC68040 stack frames.
- - added commands 'settt0', 'settt1', 'settc', 'setsrp', 'setcrp', 'setdrp'
- and 'setmmusr' to support immediate changes to the MMU configuration, if
- either a MC68851 or a MC68030 MMU is available. The command 'mmu' now
- reports the current configuration instead of the values of startup time.
-
- the following changes were proposed by Kelly van Vliet from Holland:
- - 'cop' command added, which searches for copperlists.
- - 'imp' and 'exp' commands added, which crunch and decrunch memory using the
- well known 'imploder'-algorithm. The file "explode.S" on this disk
- represents the decruncher's sourcecode, which you may use for your own
- purposes.
- - the prompt '>' can no longer be deleted using the backspace key
- - in disassembly, instructions which cause an unconditional change of
- program flow (bra, jmp, rte, rts, rtm, rtd, rtr) are followed by a
- separating line
- - 'type' command added, which allows viewing textfiles without having to
- load them to a specified memory address. The cursor advances to the
- beginning of the next line, if a line feed ($0A) occured, or the end of
- the line was reached. Text output can be canceled using the ESC-key and
- does not advance, as long as the right mousebutton is pressed.
- - the keyfunction shift-cursorright no longer puts the cursor into the last
- column. Now the cursor is moved behind the last character of the current
- line or right behind the instruction, if disassembly is active.
- - the BeerMon now is entirely position independent. For that reason the
- relocation procedure is no longer needed. As a result, the exception
- entry point is now located $16 bytes behind the regular entry point.
- Of course you may still find the tool 'hunkwizard' useful to remove the
- hunkstructure of the executable file.
- - the function keys no longer add a return character to the end of a
- string. If you define a function key using the command 'K' or the
- preferences editor BMPE and want a return at the end of a string, you
- now have to supply a trailing '|' character.
- - the command 'K' has been redefined to allow both " and ' to specify the
- string. As a result you may include strings embedded in "" withing a
- function key definition (e.g. K F1 'f 0 80000 "DEFJ"').
- - the command '?' now accepts string parameters of 1 to 4 characters
- length, which are embedded in either "" or '' quotes. The ASCII notation
- of the result is also reported.
- - added command 'fmode' which selects the way, results of the commands 'c'
- and 'f' are reported. Possible modes are table (as in the past), hexdump
- or ASCII dump.
- - added commands 'bin', 'binw', 'binl', 'bint', 'binq' for binary dump with
- 8, 16, 32, 48 or 64 bits per line. As usual the dump can be edited.
- - the key combination shift-Ins (key "0" on numeric pad) toggles between
- overwrite mode and insert mode
- - added command 'match' for displaying and clearing a 100-entry
- matchbuffer. This matchbuffer contains the resulting addresses of the
- search and compare commands.
- - in disassembly, the address of a instruction is highlighted in the
- following cases:
- - a breakpoint is defined at this address.
- - a search or compare command succeeded within this instruction, the
- result is part of the matchbuffer.
- - fixed mouse-blanking bug within the command 'bpl'.
- - the command 'info' now also reports how many bytes may be saved on the
- current disk (which depends on the selected filesystem).
- - BMPE updated to V0.13 using GadToolsBox 1.4
- - removed AGA modes from 'Mode' cycle gadget; they became obsolete.
- - added checkbox for toggling disk verify.
- - now reflects the modified function key defaults.
- - added workbench startup code, it may be started by icon now.
- - previous preferences files may be used without changes.
-
- - CHANGES made until V0.44 (oct 1992)
-
- - BMPE updated to V0.12 using GadToolsBox 1.4
- - cycle gadgets work with OS3.0, too.
- - added STD/AA chipset selection to the 'Mode' cycle gadget.
- - preferences file format remains unchanged.
- - added support for the A4000 AA chipset. Due to the differences in
- copperlist definitions, the BeerMon executable must be patched using the
- BMPE tool. The distributed version is set up in standard (including ECS)
- mode. If you are lucky to own AA chips, you must select one of the AA
- modes using the 'Mode' cycle gadget. If you use the ECS mode of the AA
- chipset, you must use a BeerMon, which has been set up for the standard
- chipset, of course.
- - redefinded the meaning of "FORCE PAL" and "FORCE NTSC" in BMPE:
- Both modify the BeamCon0 register of the AGNUS chip, which is vital one
- if you normally use a mode with a horizontal scan rate other than 15KHz,
- like e.g. productivity mode. The contents of this register can't be
- read out, which resulted in a disastrous display, when you left the
- BeerMon, because the scan rate remained at 15 KHz. Now the BeerMon does
- some magic stuff, tickeling intuition to rewrite BeamCon0 after leaving
- the BeerMon and going back to the shell. In the "AUTO" modes, BeamCon0
- isn't modified at all, so this one doesn't need this "magic", but is
- unsuitable for scan rates other than 15KHz. So ONLY use one of the
- "FORCE" modes, if your WB is configured in a mode, other than PAL or
- NTSC.
- - fixed detection of MC68040
- - improved handling of MC68040 copyback mode
- - on the A3000 and A4000 the GARY chip is now set up for DSACK-timeout, so
- you won't get any BUS error exceptions, when you access unpopulated
- memory locations, like you do outside the BeerMon. When leaving the
- BeerMon, the previous state is restored.
- - added movement in disassembly, hexdumps, ASCII dumps and copper dumps in
- whole screen pages using shift-cursorup and shift-cursordown keys.
- - added 'famiplay' command which transfers organised binary data to a Super
- Magic Drive console copier connected to the parallel port. See cable
- wiring at the end of this file.
- - changed 'ramsey' command to include chip version info (A3000/A4000 only).
- - added 'gary' command which reports information on the GARY chip
- installed (A3000/A4000 only).
- - added MC68040/68881/2 floating point instructions to disassembler.
- refer to the file M68881.asm for further information on these:
- - FMOVE.f <ea>,FPn
- - FSMOVE.f <ea>,FPn
- - FDMOVE.f <ea>,FPn
- - FMOVE.f FPm,FPn
- - FMOVE.f FPn,<ea>
- - FMOVE.P FPn,<ea>{#k}
- - FMOVE.P FPm,<ea>{Dn}
- - FMOVE.L FPcr,<ea>
- - FMOVE.L <ea>,FPcr
- - FMOVEM.X Dn,<ea>
- - FMOVEM.X <ea>,Dn
- - FMOVEM.X list,<ea>
- - FMOVEM.X <ea>,list
- - FMOVEM.L creglist,<ea>
- - FMOVEM.L <ea>,creglist
- with k being a signed factor in the range -64..63.
- with Dn being any data register.
- with FPcr being one of the FPU control registers: FPCR, FPSR, FPIAR.
- with list being a combination of FPU data registers FPn separated by "/"
- or "-".
- with creglist being a combination of FPU control registers FPCR, FPSR,
- FPIAR separated by "/".
- with FPm, FPn being any floating point register.
- with f being one of b, w, l, s, d, x, p in <ea>-mode and b, w, l, s in
- register mode.
-
- - CHANGES made until V0.43 (aug 1992)
-
- - split up 'C' command into bitsum, bootsum, datasum and kicksum commands
- - added 'megasum' command, which calculates checksums of Sega Megadrive ROM
- images
- - added 'famisum' command, which calculates checksums of Famicon ROM images
- and reports some information on the ROM image.
- - added 'smdplay' and 'rawplay' commands which transfer organised and raw
- binary data to a Super Magic Drive console copier connected to the
- parallel port. See cable wiring at the end of this file.
- - added 'smd2raw' command which converts Super Magic Drive data to raw
- binary data
- - added complete 6502/65SC802/65SC816 assembler and disassembler for those
- who are interested in the machinecode of the SNES/Super Famicon game
- console. Disassemble the file 'G65816' using the 'u' command to view all
- possible instructions of these CPUs.
-
- CHANGES made until V0.42 (july 1992)
-
- - added support for the HD-compatible disk drive Chinon FB357A, which is
- used in recent A3000 models. If such a drive is detected, all standard
- DD disks inserted are treated as before, while HD disks are handled
- with twice the standard number of sectors per track. All disk-related
- commands like 'format', 's' and 'S' take care of this difference. As a
- side effect, the internal disk-DMA buffer constantly is twice as big as
- before.
- - the 'M' command has been redesigned to allow the HD bitmap information to
- fit also on a NTSC screen. The disktype,filesystem and diskinformation
- previously reported by this command can now accessed with the new 'info'
- command.
- - the disassembler now supports the complete set of <ea>-addressing modes.
- Located on this disk is a file named NewModes.asm, which shows most of
- the additions. Here is a small excerpt:
- - move.l ([address16,pc],Rn.s*k,od.w),Dn
- - move.l ([address16,pc],Rn.s*k,od),Dn
- - move.l ([address32,pc],Rn.s*k,od.w),Dn
- - move.l ([address32,pc],Rn.s*k,od),Dn
- - move.l ([address16,zpc],Rn.s*k,od.w),Dn
- - move.l ([address16,zpc],Rn.s*k,od),Dn
- - move.l ([address32,zpc],Rn.s*k,od.w),Dn
- - move.l ([address32,zpc],Rn.s*k,od),Dn
- - move.l ([id.w,An],Rn.s*k,od.w),Dn
- - move.l ([id.w,An],Rn.s*k,od),Dn
- - move.l ([id,An],Rn.s*k,od.w),Dn
- - move.l ([id,An],Rn.s*k,od),Dn
- - move.l ([address16,pc,Rn.s*k],od.w),Dn
- - move.l ([address16,pc,Rn.s*k],od),Dn
- - move.l ([address32,pc,Rn.s*k],od.w),Dn
- - move.l ([address32,pc,Rn.s*k],od),Dn
- - move.l ([address16,zpc,Rn.s*k],od.w),Dn
- - move.l ([address16,zpc,Rn.s*k],od),Dn
- - move.l ([address32,zpc,Rn.s*k],od.w),Dn
- - move.l ([address32,zpc,Rn.s*k],od),Dn
- - move.l ([id.w,An,Rn.s*k],od.w),Dn
- - move.l ([id.w,An,Rn.s*k],od),Dn
- - move.l ([id,An,Rn.s*k],od.w),Dn
- - move.l ([id,An,Rn.s*k],od),Dn
- with address16 being an address which can be reached using 16 Bit offset
- with address32 being an address using 32 Bit offset
- with id and od being values in 16 or 32 Bit format
- with Rn.s*k being either an address- or a data register of either word or
- longword size and scaled with the optional scale factor of 2,4 or 8.
- NOTE:zpc represents a programcounter which is assumed to be 0 for the
- address calculation. Each item inside the outer brackets can be omitted
- to create a new addressing mode like e.g.:
- - move.l ([address16,pc]),Dn
- - move.l ([An],Rn.s*k),Dn
- - move.l ([]),Dn
- NOTE:because of the obvious complexity of these modes and the parsing
- code needed, the assembler doesn't support them until major rework is
- done. Besides you are advised to get yourself the Programmers Reference
- Manual M68000PM/AD from a Motorola distributor. This unique manual
- gives many informations on the MC68000/68010/68020/68030/68040/68851 and
- MC68881/68882 instructions. Possibly you'll enjoy the MC68030UM/AD User
- Manual as well, because it contains complete informations on all
- addressing modes.
- - added CPU32 instructions to assembler and disassembler:
- - BGND
- - LPSTOP #value
- - TBLU.s Dm:Dn,Dx
- - TBLUN.s Dm:Dn,Dx
- - TBLS.s Dm:Dn,Dx
- - TBLSN.s Dm:Dn,Dx
- - TBLU.s <ea>,Dx
- - TBLUN.s <ea>,Dx
- - TBLS.s <ea>,Dx
- - TBLSN.s <ea>,Dx ;s=b/w/l
- NOTE: CPU32 is an universal CPU core compatible to the MC680x0 family,
- which gets used in the MC683xx controller series.
- - added MC68040 instructions to assembler and disassembler:
- - PFLUSHN (An)
- - PFLUSHAN
- - MOVE16 (address),(An)
- - MOVE16 (address),(An)+
- - MOVE16 (An),(address)
- - MOVE16 (An)+,(address)
- - added MC68040/68881/2 floating point instructions to disassembler.
- refer to the file M68881.asm for further information on these:
- - FABS.f op1 FSABS.f op1 FDABS.f op1
- - FACOS.f op1
- - FADD.f op2 FSADD.f op2 FDADD.f op2
- - FASIN.f op1
- - FATAN.f op1
- - FATANH.f op1
- - FCMP.f op2
- - FCOS.f op1
- - FCOSH.f op1
- - FDIV.f op2 FSDIV.f op2 FDDIV.f op2
- - FETOX.f op1
- - FGETEXP.f op1
- - FGETMAN.f op1
- - FINT.f op1
- - FINTRZ.f op1
- - FLOG10.f op1
- - FLOG2.f op1
- - FLOGN.f op1
- - FLOGNP1.f op1 (Devpac V3.02 has a bug here)
- - FMOD.f op2
- - FMUL.f op2 FSMUL.f op2 FDMUL.f op2
- - FNEG.f op1 FSNEG.f op1 FSNEG.f op1
- - FREM.f op2
- - FSCALE.f op2
- - FSGLDIV.f op2
- - FSGLMUL.f op2
- - FSIN.f op1
- - FSINCOS.f <ea>,FPc:FPs FSINCOS.f FPm,FPc:FPs
- - FSINH.f op1
- - FSQRT.f op1 FSSQRT.f op1 FDSQRT.f op1
- - FSUB.f op2 FSSUB.f op2 FDSUB.f op2
- - FTAN.f op1
- - FTANH.f op1
- - FTENTOX.f op1
- - FTST.f <ea> FTST.f FPm
- - FTWOTOX.f op1
- with FPm, FPc, FPs being any floating point register
- with op1 being one of: <ea>,FPm - FPm,FPc - FPm
- with op2 being one of: <ea>,FPm - FPm,FPc
- with f being one of b, w, l, s, d, x, p in <ea>-mode and b, w, l, s in
- register mode.
- - fixed assembly and disassembly of these instructions:
- - PTESTR (An) (Bug in Devpac V3.02)
- - PTESTW (An) (Bug in Devpac V3.02)
-
- CHANGES made until V0.41 (may 1992)
-
- - hardware schematics needed some changes: (see HardIFF and HardIFF2)
- - 74F138 input G1 must be tied to _R/W instead of R/_W (Thanx Taipan/UFO)
- - both pins 30 and 32 of the RAMs should be connected to +5V, as some
- static RAMS use pin 30 as a second chip-select input.
- - support for international filesystem (new OS2.0 DOSTypes DOS\2 and DOS\3)
- added to all filesystem related commands. The following commands have
- visibly changed:
- - 'format', see commandlist for changes in parameters
- - 'install', see commandlist for changes in parameters
- - 'M', now also reports the filesystem (not international/international)
- NOTE: the BeerMon recognises the filesystem of a disk by examining the
- bootblock. Within AmigaDOS (read:outside the BeerMon), DOS\2 and DOS\3
- disks can ONLY be used with OS 2.0 or higher.
- - completely rewritten clockchip handling, both the standard (A500/A2000)
- MSM6242 RS clockchip and the new A3000/A4000 clockchip can be used for
- creation date of files and disks, if they are detected and they seem to
- be functional. The century leap is also handled, so you may use the
- BeerMon until the end of the year 2077 :-)
- - presense of a MC68040 is detected
- - added MC68040 instructions to assembler and disassembler:
- - MOVEC reg,Rn with reg being one of SRP,URP,TC,DTT0,DTT1,ITT0,ITT1
- - MOVEC Rn,reg with reg being one of SRP,URP,TC,DTT0,DTT1,ITT0,ITT1
- - CINVA mode with mode being one of NC,DC,IC,BC
- - CPUSHA mode with mode being one of NC,DC,IC,BC
- - CINVP mode,(An) with mode being one of NC,DC,IC,BC
- - CPUSHP mode,(An) with mode being one of NC,DC,IC,BC
- - CINVL mode,(An) with mode being one of NC,DC,IC,BC
- - CPUSHL mode,(An) with mode being one of NC,DC,IC,BC
- - MOVE16 (Am)+,(An)+
- - PTESTR (An)
- - PTESTW (An)
- - PFLUSH (An)
- - PFLUSHA! (named this way instead of PFLUSHA because of name conflict
- with the incompatible MC68851/MC68030-MMU PFLUSHA instruction)
- - added MC68851 MMU (only) instructions to assembler and disassembler:
- - PVALID An,<ea>
- - PFLUSHR <ea>
- - PFLUSHS #n,#m
- - PFLUSHS Dn,#m
- - PFLUSHS reg,#m with reg being either SFC or DFC
- - PRESTORE <ea>
- - PSAVE <ea>
- - PScc <ea>
- - PBcc.s address ,s=w/l
- - PDBcc Dn,address
- - PTRAPcc
- - PTRAPcc.s #value ,s=w/l
- where cc is one of the MMU conditioncodes:
- bs,bc,ls,lc,ss,sc,as,ac,ws,wc,is,ic,gs,gc,cs,cc
- - PMOVE mmur,<ea> with mmur being one of PSR,PCSR,CAL,VAL,SCC,AC
- - PMOVE <ea>,mmur with mmur being one of PSR,PCSR,CAL,VAL,SCC,AC
- - added FPU instructions to assembler and disassembler:
- - FBcc.s address ,s=w/l
- where cc is one of the FPU conditioncodes:
- f,eq,ogt,oge,olt,ole,ogl,or,un,ueq,ugt,uge,ult,ule,ne,t
- sf,seq,gt,ge,lt,le,gl,gle,ngle,ngl,nle,nlt,nge,ngt,sne,st
- - changed disassembly of short branches from Bcc.S to Bcc.B, because this
- is the official syntax. the assembler accepts both versions.
- - 'vc' command parameter handling fixed.
- - assembler/disassembler validation sources ported from OMA2.0 assembler to
- Devpac V3.02 (because of horrid OMA bugs :-)
- - BMPE preferences editor was redesigned with GadToolsBox V1.3, so the
- version bumped to V0.11
-
- CHANGES made until V0.40 (march 1992)
-
- - external preferences editor BMPE added, which allows you to define your
- personal
- - screenmode (PAL/NTSC, Force PAL, Force NTSC)
- - colours (back- and foreground RGB values in hexadecimal notation)
- - keymap (german or american layout)
- - key repeat rate (fast, medium, slow)
- - cpu-restrictions (standard or economy, use economy ONLY if you own a
- 'crippled' CPU MC68EC030 such as the infamous VXL board, which is known
- to miss a MMU)
- - 10 functionkeys
- The settings can be saved and loaded according to the Prefs path you
- specify. A modify-function then performs the patching of BeerMon
- executables, which are not older than this version V0.40
- NOTE: BMPE NEEDS OS 2.0! - the gadtools.library and the GadToolsBox are
- too good to be ignored, and it's time to upgrade to OS2.0 anyway :-)
- - added patch area to BeerMon, which gets used by BMPE
- - the MMU related commands now tell you if you don't have one (just in case
- you didn't know it :-)
- - 'mmu' command reports DRP contents, if a MC68851 MMU is installed
- - added MMU instructions to assembler and disassembler:
- - PMOVE DRP,<ea> (MC68851 MMU only)
- - PMOVE <ea>,DRP (MC68851 MMU only)
- - 'r' command now only reports those registers and flags , which are allowed
- with the detected CPU
- - occupy and exor commands changed, you now may use o, ow, ol, e, ew or el
- according to your intention to use a byte, word or longword argument
- - history function now ignores empty commandlines ^ö^ HI
- - when aborting the 'fi' function, the current address is reported. " PBA!
- - the help key now increments the help page each time it is pressed
- - checksum command 'C' now also calculates 256/512 KB kickstart checksums
- - 'i' command now shows full $100 bytes of the original vector table.
-
- CHANGES made until V0.39 (february 1992)
-
- - shift-tab keyfunction added, deletes all characters from current cursor
- upto the right border
- - history has been added: shift-keypad-8/2 (up/down) recalls upto 10 lines
- - cursor movement extended: shift-keypad-7/1 (home/end) places cursor in
- the first column of the first/last row
- - nop command added, it simply sets the specified number of NOP instructions
- - mmuon and mmuoff commands added. These allow enabling/disabling of
- address translations (so you may examine the A3000 ROM or deactivate other
- MMU setups)
- BTW:keep your hands of those low cost turboboards using the MC68EC030 or
- even the MC68EC040, sooner of later you'll regret that this CPU doesn't
- have a MMU!
- - finally adding/listing/removing of breakpoints added
- - completely rewritten exception handler; now works on MC68000/10/20/30 CPU
- and also handles FPU/MMU exceptions
- - cls added, clears the screen
- - find instruction command added. This allows you searching for special
- instructions using the * and ? joker.
- Just try something like 'fi fc0000 fc1000 "move*d?,a"'
- - MOVE <ea>,SR will be disassembled correctly again.
-
- CHANGES made until V0.38 (january 1992)
-
- - presence of a MC68851 MMU or a MC68030-built-in-MMU is detected
- - 'r' command now also explains the CACR settings
- - 'R' command added, reports FPU registers in hex and scientific notation
- - 'mmu' command added, reports MMU registers and their bit settings
- - 'ramsey' command added, (only useful if you have an A3000)
- - renamed the 'keymap' command back to 'k', someone really seems to use it :-)
- - fixed a V0.36+ bug: 'x' easily crashed on machines without MC68030
- - effective address info ('dv') no longer ignores index scaling
- - FDxx Dx,label displacement bug fixed (another bug in OMA2.0)
- - added FPU instructions to assembler and disassembler:
- - FNOP
- - FMOVECR #m,FPn with m being one of 0,$b-$f,$30-$3f
- - added MMU instructions to assembler and disassembler:
- - PMOVE mmur,<ea> with mmur being one of SRP,CRP,TT0,TT1,TC,MMUSR
- - PMOVE <ea>,mmur with mmur being one of SRP,CRP,TT0,TT1,TC,MMUSR
- - PMOVEFD <ea>,mmur with mmur being one of SRP,CRP,TT0,TT1,TC
- - PFLUSH #n,#m
- - PFLUSH Dn,#m
- - PFLUSH reg,#m with reg being either SFC or DFC
- - PFLUSHA
- - PLOADR #n,<ea>
- - PLOADW #n,<ea>
- - PTESTR #n,<ea>,#m,An
- - PTESTW #n,<ea>,#m,An
- - lowmem for workspace and hunk-copymem routine moved from $c0 to $100 to
- allow handling of FPU and MMU traps in a future version
- - if EXEC isn't corrupted, any even VBR value is allowed
- NOTE:you MUSTN'T change VBR within a routine executed with 'g'
- NOTE:if you change the VBR with 'r', it won't be set until 'g' is used
- - fixed bug in resident list display (/9), occured if bit 31 was set.
- - on startup, the completion of the current blitter operation is waited for.
-
- CHANGES made until V0.37 (december 1991)
-
- - the OS2.0 hardlink feature is now fully supported with both OFS and FFS.
- hardlinks and dirlinks are reported when using the 'dir' command.
- the commands 'cd','del','L' work with and without links in the usual way.
- - Workspace and BackupMem allocation procedure has been changed due to
- popular demand. Don't miss reading the decription of the 'W' command.
- - finally the BeerMon both works on PAL and NTSC Amigas. The NTSC mode is
- derived from bit 12 of VPOSR, so the agnus jumper is considered and not
- the BeamCon0 settings.
- - the presence of 1.5 MB graphics memory is detected, which is a possible
- configuration on the A500 plus.
- - the presence of a FPU and its type (MC68881/2) is reported
- - fixed bug where 'dir f' reported hashchainkey instead of the
- fileheaderextension key.
- - exit function 'X' now clears the Chip memory, because the OS2.0 doesn't
- do it anymore. The fillvalue is $ffffffff.
- - CloseLibrary-bug in OS2.04 bootblock removed.
-
- CHANGES made until V0.36 (november 1991)
-
- - fixed bug in ASCII-edit part of the 'm' function
- - fixed filesystem bug (fileheaderextension blocks were not 'official' style)
- - renamed some ECS registers (the new hardware reference manual is out now :-)
- - relaxed CIA timing values (any A1000ers out there with MatsuShit(a) drive?)
- - major assembler/disassembler update from old Motorola syntax to new one
- quick docs: offset(An) changed to (offset,An)
- offset(An,Rm.s) changed to (offset,An,Rm.s) ,s=w/l
- address(PC) changed to (address,PC)
- offset(PC,Rn.s) changed to (address,PC,Rn.s) ,s=w/l
- address changed to (address)
- address.w changed to (address).w
- - scaling now is possible: (address,An,Rm.s*k) ,k=1,2,4,8
- - added FPU instructions: FDBcc Dx,address FRESTORE <ea>
- FSAVE <ea> FTRAPcc FTRAPcc.s #value ,s=w/l
- FScc <ea>
- where cc is one of the FPU conditioncodes:
- f,eq,ogt,oge,olt,ole,ogl,or,un,ueq,ugt,uge,ult,ule,ne,t
- sf,seq,gt,ge,lt,le,gl,gle,ngle,ngl,nle,nlt,nge,ngt,sne,st
- - disassembler suppresses leading 0's (e.g. '4' instead of '$0000004')
- - moved column of disassembler operands ('ftrapngle.l #k' looks so nice :-)
- - now detects and supports MC68000/10/20/30
- - vbr,sfc,dfc,msp,cacr,caar are handled correctly if they are available
- (vbr should remain 0 until the ultimate solution has been figured out)
- - support for A2000A clockchip ($d80000) had to be removed, because it
- trapped on my A3000
- - no more interference of backupmem-search with CPU data caching
- - support for 2MB chipmem. if available, the screen defaults to $1f4000
- - cleaned up grabbing of the system a bit and the return to CLI a bit more.
- (but you still shouldn't use it with enforcer :-)
- - improved mouse-acceleration in memory view mode ('b')
- - power-led blink removed (wasn't that difficult...)
- - the reset command ('X') now works with Kick 1.2/1.3/2.04
-
- CHANGES made since V0.28 (june 1990) upto this version 0.35 (oct 1991)
-
- - the BeerMon status is now: (C) by Carnivore/BeerMacht, but FREEWARE.
- - dramatic increase in scrolling speed
- - finally debugged 'del' function
- - minor debugging of (dis)assembler
- - diskroutines now use timer instead of delay loops.
- - FastFileSystem and OldFileSystem support for disks
- - Copper-assembler/disassembler with symbolic ECS registers
- - text-snapping with right mousebutton
- - second screen, swapping with 'shift-help'
- - a help-function with 'help'
- - added MC68010 instructions
- NOTE: currently on startup the VBR register MUST be set to zero (default).
- So don't use a 'MoveVBR'-type programm. The new registers are currently
- ignored, if you execute a program. You need to set them by yourself
- (e.g. MOVEC a0,vbr)
- - added MC68020 instructions (currently without extended <EA> and
- coprocessor instructions). Disassemble the file 'DemoCode' to get an
- idea of it. The sourcecode to 'DemoCode' is part of this distribution.
- - added 32 bit support for most functions
- - invalid syncs are reported
- - syncs can be determined (or guessed?)
- - format and install commands added
- - time and date infos are set when using format, save
- - start and endaddress are saved as a filecomment and are shown using the
- dir command. So typing 'L' + return loads the file to the propper address.
- - more info is given using the 'dir f' command
- - scrolling backwards is added, usefull in disassembly (CPU/Copper) and the
- memory dump commands
- - nice pic on startup (well, it uses no valueable ram, it's my DMAbuffer :-)
- - the code grew more and more, therefor a complete new hardware design, now
- offering 256 KB of static memory.
- With it $BFDxxx, $BFExxx and $DFFxxx register values appear at $F3Dxxx!
- BeerMon may support this feature some day.
- - on reset-entry, available Zorro-II(I) boards can be configured with the
- config command (well, there is still no HD-support, should I add the
- ability to use AMAX-HDdrivers? Uummmphh, not now ;-)
- - Bcc.L (MC68000) has been changed to Bcc.W (because .L implies the MC68020+
- 32 bit offset branches)
- - the sourcecode isn't part of this distribution anymore, portions of it
- may or may not be released, if someone asks me for it.
-
- and more to mention, but I'm a bit lasy... so wait for the next update
- (more frequent than in the past) and spend me some beer if we happen to
- meet :-)
-
- ···········································································
-
- now some general notes about the BeerMon...
-
- the mouse: enables you to set the cursor (left mousebutton). Pressing
- the right mousebutton stops any textoutput on screen, until
- it is released again. If you press the right mousebutton
- when no function is activated, the string below the
- mousepointer is copied to the current cursor position.
- escape key: aborts any command (even load/save...)
- tab key: sets the cursor to next item of data in a block (skips
- spaces, is useful in directory and hexdump).
- shift-tab deletes all characters between the current cursor position
- and ending with the last column.
- help key: a brief command summary, pressing it multiple times advances
- the page.
- shift-help swap screens 1 and 2
- backspace behaves as usual
- shift-backspace clears screen del behaves as usual shift-del inserts spaces
- shift-keypad-8 goes backwards inside the history buffer. The history depth
- is 10 lines.
- shift-keypad-2 goes forwards inside the history buffer
- shift-keypad-0 toggles between overwrite mode and insert mode
- shift-cursor moves the cursor to the limit of the selected direction, with
- the exception of shift-cursorright, where the cursor is
- placed behind the last character of the current line.
- if the cursor has already been at the upper or lower limit,
- the following commands are executed in pagemode:
- ASCII dump, hex dump, binary dump, copper dump, MC680x0
- and 6502/65SC802/65SC816 disassemblers.
- shift-keypad-7 moves the cursor to the first column of the first row
- shift-keypad-1 moves the cursor to the first column of the last row
- muliate: the standard mode which you usualy would enter, without
- freezing.
- freezing: is in work, not yet finished, but seems to become funky.
- the display: currently in pal, but there will be other options in future.
- the keymap: defaults to german keymap, but can be changed with "k"
- CPU: currently MC68000/10/20/30/40 are tested, the MC68010+ might
- get useful in future due to the vector base capability to
- trick some protections vomiting on the those pointers around
- $000xxx (full tracing of every prg may become possible).
- agnus: new angus chip is recognized and may be used with 1, 1.5 or
- 2MB chip memory (-> play sound, workspace).
-
- well, now we come to the command list, < > means optional parameter(s)...
- -----------------------------------------------------------------------------
-
- m <addr1> <addr2>
- gives a hexdump as well as display in ASCII of specified or following
- memory locations. Both can be edited using the cursor.
-
- a <addr1> <addr2>
- gives a display of specified or following memory locations in ASCII.
- This can easily be edited using the cursor.
-
- bin <addr1> <addr2>
- gives a binary dump with 8 bits per line of specified or following
- memory locations. This can easily be edited using the cursor.
-
- binw <addr1> <addr2>
- gives a binary dump with 16 bits per line of specified or following
- memory locations. This can easily be edited using the cursor.
-
- binl <addr1> <addr2>
- gives a binary dump with 32 bits per line of specified or following
- memory locations. This can easily be edited using the cursor.
-
- bint <addr1> <addr2>
- gives a binary dump with 48 bits per line of specified or following
- memory locations. This can easily be edited using the cursor.
-
- binq <addr1> <addr2>
- gives a binary dump with 64 bits per line of specified or following
- memory locations. This can easily be edited using the cursor.
-
- ? value <operation value> <operation value> <...>
- returns the result of a calculation. If there is no preceeding
- character, "value" is interpreted as a hexadecimal value. If the
- preceeding character is a '#', the value is interpreted as a decimal
- value. If "value" is embedded in either "" or '' quotes, it is
- interpreted as an ASCII parameter. The operations can be one of the
- following:
-
- + add to
- - subtract
- * multiply by
- / divide by
- ! or with
- & and with
- = exor with
- < shift left "value" times
- > shift right "value" times
-
- The result is returned as a hexadecimal, decimal and binary values and
- in its ASCII representation.
-
- c addr1 addr2 addr3
- compares the memory beginning with "addr1" and ending with "addr2"-1
- with the memory locations starting at "addr3". The result is a list of
- all memory locations which are different.
- The address of such a memory region will be stored in the matchbuffer,
- as long as there is a free entry.
-
- t addr1 addr2 addr3
- tranfers the memory beginning with "addr1" and ending with "addr2"-1
- to the memory locations starting at "addr3"
-
- imp addr1 addr2 <mode>
- compresses the memory region beginning with "addr1" and ending with
- "addr2"-1. The parameter "mode" in the range from 0 to b selects the
- implode quality, which influences the time needed for operation. If no
- parameter "mode" is specified, a default mode "0" is used. While
- imploding a progress indicator shows the number of bytes to go and the
- bytes which were already saved. Imploding can be aborted by pressing
- the "esc"-key. If the memory region cannot be imploded, a message will
- be given. After imploding the total number of saved bytes and the
- location of the imploded data is reported. Please note that this
- command always modifies the specified memory region.
-
- exp addr
- decompresses the memory region beginning with "addr", if seems to
- contain valid imploded data. After exploding the location of the
- exploded data is reported. If you want to use imploded data for your
- own purposes, you may use the sourcecode named "explode.S" on this disk.
-
- nop addr num
- fills the memory beginning with "addr" with the specified number "num"
- of NOP instructions ($4E71).
-
- o addr1 addr2 byte
- fills the memory beginning with "addr1" and ending with "addr2"-1
- with the specified one-byte value "byte".
-
- ow addr1 addr2 word
- fills the memory beginning with "addr1" and ending with "addr2"-1
- with the specified two-byte value "word".
-
- ol addr1 addr2 long
- fills the memory beginning with "addr1" and ending with "addr2"-1
- with the specified four-byte value "long".
-
- e addr1 addr2 byte
- performs an exor operation with the memory beginning with "addr1" and
- ending with "addr2"-1 using the specified one-byte value "byte".
-
- ew addr1 addr2 word
- performs an exor operation with the memory beginning with "addr1" and
- ending with "addr2"-1 using the specified two-byte value "word".
-
- el addr1 addr2 word
- performs an exor operation with the memory beginning with "addr1" and
- ending with "addr2"-1 using the specified four-byte value "long".
-
- f addr1 addr2 byte <byte> <byte> <...>
- searches for one to 14 bytes beginning with "addr1" and ending with
- "addr2"-1. The result is a list of all memory locations where the
- specified byte or sequence can be found.
- The address of the sequence will be stored in the matchbuffer, as
- long as there is a free entry.
-
-
- f addr1 addr2 "text"
- searches for a text of up to 14 characters length beginning with
- "addr1" and ending with "addr2"-1. The result is a list of all memory
- locations where the specified text can be found.
- The address of the sequence will be stored in the matchbuffer, as
- long as there is a free entry.
-
- fmode [0|1|2]
- selects the way the results of the commands 'f' and 'c' are
- displayed. A parameter '0' selects tabular output of the addresses.
- A parameter '1' selects hexadecimal output similar to the command 'm'.
- A parameter '2' selects ASCII output similar to the command 'a'.
-
- fi addr1 addr2 "pattern*?"
- searches for a fragment of disassembled instructions beginning with
- "addr1" and ending with "addr2"-1. An ending '*' joker is obsolete.
- Example: if you use the pattern "*q.w*1,(?,?0,d1.w)"
- any occurence of these instruction could be shown:
- ADDQ.W #1,(2,A0,D1.W) as well as SUBQ.W #1,(9,D0,D1.W)
- When the 'fi' function is aborted, the current address is shown.
- The address of the instruction will be stored in the matchbuffer, as
- long as there is a free entry.
-
- F addr
- searches for all conditional branch-instructions relatively accessing
- the specified address. Any occurence is shown in disassembled form.
- Possible instructions would be:
-
- BEQ.B/W $xx
- BRA.B/W $xx
- BSR.B/W $xx
- DBF Dn,$xx ...
-
- The address of the instruction will be stored in the matchbuffer, as
- long as there is a free entry.
-
- F addr pc
- searches for all instructions accessing the specified address using
- the pc-relative addressing-mode. Any occurence is shown in disassembled
- form. Possible instructions would be:
-
- LEA $xx(PC),Ax
- JSR $xx(PC)
- MOVE.B/W/L $xx(PC),xx ...
-
- The address of the instruction will be stored in the matchbuffer, as
- long as there is a free entry.
-
- p addr1 addr2 <period>
- plays DMA-sound using the chip memory locations beginning with
- "addr1" and ending with "addr2". The current address of the sound DMA
- is shown while playing the sound. If no period is specified a period of
- $100 is used. The length of sounddata to be played is not limited to
- 128 KB.
-
- r <register value>
- displays current CPU-register contents and flags if no parameters are
- given. Only those registers and flags which are valid for the installed
- cpu are shown. If register and value are specified the register is
- modified accordingly. Possible registers are:
-
- D0 - D7
- A0 - A7
- VBR (new with MC68010 - shouldn't be changed without reason)
- SFC (new with MC68010)
- DFC (new with MC68010)
- CACR (new with MC68020, extended with MC68030 - see note)
- CAAR (MC68020 and MC68030 only)
- USP
- ISP (formerly SSP on MC68000)
- MSP (new with MC68020 - note, that EXEC doesn't initialize this one)
- SR (extended with MC68020) - see note)
-
- note: SR explanation (MC68000+)
- 680x0 bit - function
- 0 #15 - T1, Trace 1
- 2 #14 - T0, Trace 0
- 0 #13 - S, Supervisor Stackpointer
- 2 #12 - M, Master Stackpointer
- 0 #10 - \
- 0 ..#8 - / Interrupt Mask
- 0 #4 - X, Extend Flag
- 0 #3 - N, Negative Flag
- 0 #2 - Z, Zero Flag
- 0 #1 - V, Overflow Flag
- 0 #0 - C, Carry Flag
-
- note:CACR explanation (MC68020)
- bit - function
- #3 - CI, Clear Instruction Cache \
- #2 - CEI, Clear Entry in Instruction Cache /reads back 0
- #1 - FI, Freeze Instruction Cache
- #0 - EI, Enable Instruction Cache
-
- note:CACR explanation (MC68030)
- #13 - WA, Write Allocate (should be set)
- #12 - DBE, Data Burst Enable
- #11 - CD, Clear Data Cache \
- #10 - CED, Clear Entry in Data Cache /reads back 0
- #9 - FD, Freeze Data Cache
- #8 - ED, Enable Data Cache
- #4 - IBE, Instruction Burst Enable
- #3 - CI, Clear Instruction Cache \
- #2 - CEI, Clear Entry in Instruction Cache /reads back 0
- #1 - FI, Freeze Instruction Cache
- #0 - EI, Enable Instruction Cache
-
- note:CACR explanation (MC68040)
- #31 - DE, Enable Data Cache
- #15 - IE, Enable Instruction Cache
-
- R
- displays current FPU-register contents. Reported are:
-
- FP0 - FP7 in 96(80) bit extended real notation. Signed scientific
- notation with SNAN/NAN/INFINITY is also reported, if a
- FPU MC68881/2 is installed.
- FPCR exception mask, mode control
- bit - function
- #15 - BSUN, Branch/Set on UNordered
- #14 - SNAN, Signalling Not A Number
- #13 - OPERR, OPerand ERRor
- #12 - OVFL, OVerFLow
- #11 - UNFL, UNderFLow
- #10 - DZ, Divide by Zero
- #9 - INEX2, INEXact operation
- #8 - INEX1, INEXact decimal input
- #7 - \ 0 0 1
- #6 - /PRECision 0 eXtended 1 Single 0 Double
- #5 - \ 0 0 1 1
- #4 - /RND, round 0 Next 1 Zero 0 Minus 1 Plus
-
- FPSR condition code,quotient byte,exception,accrued exception
- bit - function
- #27 - N, Negative
- #26 - Z, Zero
- #25 - I, Infinite
- #24 - NAN, Not A Number
- #23 - S, quotient Sign
- #22 - Q, Quotient
- ... #16 - byte (7 least significant bits)
- #15 - BSUN, Branch/Set on UNordered
- #14 - SNAN, Signalling Not A Number
- #13 - OPERR, OPerand ERRor
- #12 - OVFL, OVerFLow
- #11 - UNFL, UNderFLow
- #10 - DZ, Divide by Zero
- #9 - INEX2, INEXact operation
- #8 - INEX1, INEXact decimal input
- #7 - IOP, Invalid OPeration (BSUN|SNAN|OPERR)
- #6 - OVFL, OVerFLow
- #5 - UNFL, UNderFLow (UNFL|INEX2)
- #4 - DZ, Divide by Zero
- #3 - INEX, INEXact operation (INEX1|INEX2|OVFL)
-
- FPIAR floating point instruction address register
-
- mmu
- displays current MC68851/68030 MMU-register contents. Reported are:
-
- TT0,TT1 - Transparent Translation
- bit - function
- #31 - \
- ... #24 - /LAB, Logical Address Base
- #23 - \
- ... #16 - /LAM, Logical Address Mask
- #15 - E, Enable
- #10 - CI, Cache Inhibit
- #9 - R/W, Read/Write
- #8 - RWM, Read/Write Mask
- #6 - \
- ... #4 - /FC, Function Code
- #2 - \
- ... #0 - /FCM, Function Code Mask
-
- TC Translation Control
- bit - function
- #31 - E, Enable
- #25 - SRE, Supervisor Root Enable
- #24 - FCL, Function Code Lookup enable
- #23 - \
- ... #20 - /PS, Pagesize (¼..32KB)
- #19 - \
- ... #16 - /IS, Initial Shift (0..15)
- #15 - \
- ... #12 - /TIA, Table Index A (1..15)
- #11 - \
- ... #8 - /TIB, Table Index B (0..15)
- #7 - \
- ... #4 - /TIC, Table Index C (0..15)
- #3 - \
- ... #0 - /TID, Table Index D (0..15)
-
- (DRP - Dma Root Pointer, MC68851 MMU only)
- CRP,SRP - Cpu, Supervisor Root Pointer
- bit - function
- #63 - L/U, Lower/Upper limit
- #62 - \
- ... #48 - /LMT, Limit
- #33 - \
- ... #32 - /DT, Descriptor Type
- #31 - \
- ....#4 - /TA, Table Address
-
- MMUSR - MMU Status Register
- bit - function
- #15 - B, Bus error
- #14 - L, Limit error
- #13 - S, Supervisor only
- #11 - W, Write protected
- #10 - I, Invalid
- #9 - M, Modified
- #6 - T, Transparent translation
- #2 - \
- ... #0 - /N, Number of levels
-
- ramsey
- displays current RAMSEY configuration (A3000/A4000 only).
- Reported are:
- Page Detect Mode:(on/off)
- Burst Mode:(on/off)
- Burst Wrap Mode:(on/off)
- Chips onboard:(256KBit*4/1MBit*1/1MBit*4/4MBit*4)
- Refresh Rate:(154/238/380/off)cycles
- Ramsey Version:($0d/$0e)
-
- gary
- displays current GARY configuration (A3000/A4000 only).
- Reported are:
- Timeout:(disabled/Bus Error/DSACK)
- Keyboard Reset Enable:(on/off)
- Gary Version ID:($00/$90)
-
- bs addr
- adds a memory location to the list of breakpoints, if the location
- specified is even, hasn't been set yet and if it is a valid RAM
- location. Breakpoints may also be placed in MMU-protected RAM, but not
- in ROM. Up to 10 breakpoints at one time are possible.
-
- bl
- shows the breakpoint locations in disassembly.
-
- bc addr
- removes a specified memory location from the list of breakpoints. If
- the parameter 0 is used, all breakpoints will be removed.
-
- g addr
- executes a subroutine at the specified memory location. The
- CPU/MMU/FPU-registers are set before execution and the resulting
- register contents are displayed after the execution. All CPU/MMU/FPU-
- exceptions are controlled and the memory location where it occured is
- displayed. Take care, that the active stackpointer doesn't trash important
- data. Before the execution the specified breakpoint locations are
- prepared and available CPU cache is cleared (not disabled!). After the
- execution the previous instructions will be restored. When an exception
- occurs, the stackpointer is corrected, so executing
- lea ($40000),a7
- illegal
- results in the expected register display, though the code has been
- started via 'JSR'.
-
- mmuoff
- disables the MMU (if you are lucky to own one :-). This affects all
- memory operations like viewing, editing, disassembling, saving - but NOT
- program execution, which uses the MMU setup, visible with 'mmu'. With
- this command you may e.g. examine the A3000 built-in alpha ROM or change
- MMU-protected RAM). If you don't have a MMU, you will be told.
-
- mmuon
- enables the MMU. If the current MMU setup is mangled, or has never
- been initialised this could result in a MMU exception. If you don't
- have a MMU, you will be told.
-
- settt0 value
- this command places the specified value into the TT0 register of the
- MMU. This may cause disastrous crashes if you don't know what you're
- doing. If you don't have a MMU, you will be told.
-
- settt1 value
- this command places the specified value into the TT1 register of the
- MMU. This may cause disastrous crashes if you don't know what you're
- doing. If you don't have a MMU, you will be told.
-
- settc value
- this command places the specified value into the TC register of the
- MMU. This may cause disastrous crashes if you don't know what you're
- doing. If you don't have a MMU, you will be told.
-
- setsrp value1 value2
- this command places the specified values into the SRP register of the
- MMU. This may cause disastrous crashes if you don't know what you're
- doing. If you don't have a MMU, you will be told.
-
- setcrp value1 value2
- this command places the specified values into the CRP register of the
- MMU. This may cause disastrous crashes if you don't know what you're
- doing. If you don't have a MMU, you will be told.
-
- setdrp value1 value2
- this command places the specified values into the DRP register of the
- MMU. This may cause disastrous crashes if you don't know what you're
- doing. If you don't have a MC68851 MMU, you will be told.
-
- setmmusr value
- this command places the specified values into the MMUSR register of
- the MMU. This may cause disastrous crashes if you don't know what
- you're doing. If you don't have a MMU, you will be told.
-
- x
- exits the monitor. If the monitor has been invoked from CLI, he
- returns to it. If the monitor is located in the module a reset is
- performed. If the monitor is invoked by a freeze mechanism, the freezed
- program is continued.
-
- X
- exits the monitor and performs a complete hardware-reset including
- clearing of the memory.
-
- B rgb1 rgb2
- changes the background and foreground colors of the display.
-
- W <addr>
- displays the current workspace locations if no parameter is
- specified. In case a parameter is specified and there is backup memory
- either in the module or in special memory areas, the workspace is
- changed to the specified chip memory location. The previous memory
- locations used as a workspace are restored using the backupmemory
- contents saved while startup. If there is no module installed the
- monitor first checks, if execbase checksums are valid. If they are, the
- memlist is scanned for a chunk of graphics memory being big enough to
- hold the screen and the diskDMAbuffer. The text 'Scr(SYS)' reflects
- this case. If none is found or execbase seems corrupted, absolute
- memory is used; conflicts of possible code/workspace overlay are
- handled correctly. The text 'Scr(ABS)' reflects this case. The above
- is valid for exchange memory, too. The corresponding texts are
- 'Exg(SYS)' and 'Exg(ABS)'. If the chunk in the memlist is more than
- big enough, the workspace is placed at the end of it. Currently the
- following locations are scanned for memory expansions during startup, if
- no chunk of fast memory being big enough is found using the memlist, or
- if execbase seems corrupted.
-
- $f00000 $200000 $c00000 $80000
-
- If there is no backup memory found or you pressed right mousebutton
- during startup, no backupmemory is used and therefor the original
- contents cannot be restored when changing the workspace or exiting.
- The workspace memory which is used for screenbitmap and disk drive
- DMA-buffers defaults to $74000 in absolute mode, if there is a 8371
- agnus. With 1 MB continous ram below $100000 and a big agnus chip, the
- workspace defaults to $f4000. With 1.5 MB continous ram below $180000
- and a big agnus chip, the workspace defaults to $174000. With 2 MB
- continous ram below $200000 and a big agnus chip, the workspace defaults
- to $1f4000. If the absolute workspace would overlay with the memory
- in which the monitor is located, the absolute workspace is placed just
- before the programcode. Keep in mind, that if any absolute memory is
- used, returning to the shell is rather risky, because unexpected things
- *may* happen.
-
- i
- displays the contents of the CPU-exceptionvectors, DMA- and
- interrupt-registers determined during startup. The vectors are changed
- within the monitor to prevent executed programs from creating any alerts
- and gurus.
-
- match <0>
- displays the contents of the matchbuffer, if no parameter is
- specified. In case of an parameter '0', the matchbuffer is cleared.
-
- d <addr1> <addr2>
- disassembles the memory locations beginning with "addr1" and ending
- with "addr2"-1 if they are specified. The disassembly can be edited
- using the cursor. Instructions, which cause an unconditional change of
- program flow are followed by a separating line. If no valid instruction
- is given the line is not accepted and not altered in memory. The
- address of an instruction, whose address is part of the breakpoint- or
- matchbuffer is highlighted.
-
- dm
- changes the way offsets are displayed in disassembly between decimal
- and hexadecimal form.
-
- ds
- changes the way offsets are displayed in disassembly between signed
- and unsigned form.
-
- dv
- toggles the calculation of the effective address on the right part of
- the disassembly. In the worst case of abnormally large instructions
- (movem), you may want to toggle this function off. Note that currently
- predecrement and postincrement is ignored.
-
- n addr
- invokes the built-in MC680x0 line-assembler at the specified address.
- The current instruction is displayed.
-
- N addr
- invokes the built-in 6502/65SC802/65SC816 line-assembler at the
- specified address. The current instruction is displayed.
-
- auto
- enables automatic immediate operand size selection for
- 65SC802/65SC816 instructions. This function is of use in both assembly
- and disassembly, because it remembers previous SEP #$xx and REP #$xx
- instructions. Note that the functionality depends on a linear flow of
- code. The default size is 16 bit for accumulator and index registers.
-
- accu [8|16]
- forces accumulator immediate operand size to either 8 or 16 bits and
- disables automatic immediate operand size selection.
-
- index [8|16]
- forces index register immediate operand size to either 8 or 16 bits
- and disables automatic immediate operand size selection.
-
- u <addr1> <addr2>
- disassembles the memory locations in 6502/65SC802/65SC816 mode
- beginning with "addr1" and ending with "addr2"-1 if they are specified.
- The instrucions are shown in hexadecimal, mnemonic and ASCII notation.
- The effect of SEP #$xx and REP #$xx instruction on immediate opperands
- is commented. The special SNES hardware registers are commented, if
- they are accessed in absolute and absolute/indexed addressing modes.
- The disassembly can be edited using the cursor. If no valid instruction
- is given the line is not accepted and not altered in memory.
-
- K <fn "text1|text2...">
- defines commands or command sequences to be executed when pressing
- one of the function keys. The parameter "fn" may be one between f1 -
- f10. The "|" sign results in a return key being written into the input
- buffer and is also needed for the last command in a sequence, if you
- want it being automatically executed. Both quoting characters " and '
- can be used to define the string. If no parameters are specified the
- current function key settings are displayed.
-
- D <n>
- selects another diskdrive. The parameter "n" may be one between 0
- and 3 where 0 corresponds to DF0. The current directory is set to the
- root directory. If the specified diskdrive is not available the drive 0
- is selected. If no parameter is specified the current diskdrive is
- returned.
-
- dir <f>
- first reports the name of the disk or the current subdirectory and
- the number of free and used blocks. The filelist of the current
- directory including the comment and the size in bytes and blocks is
- returned. Existing hardlinks are reported with the corresponding object
- refered to. Note that linked files and directories do support their own
- datestamp, but don't support their own protection bits and file comments
- If the option f is given, the time and date of creation, the protection
- bits, the file/dirheader key, the fileextension key and the first
- datablock key is also returned. If the disk is not a dos disk or if any
- other errors occur a corresponding message is returned.
-
- bootsum addr
- calculates and sets the checksum of an AmigaDOS bootblock located at
- the specified address. The previous and the new checksums are returned.
-
- datasum addr
- calculates and sets the checksum of an AmigaDOS datablock located at
- the specified address. The previous and the new checksums are returned.
-
- bitsum addr
- calculates and sets the checksum of an AmigaDOS bitmapblock located
- at the specified address. The previous and the new checksums are
- returned.
-
- kicksum addr
- calculates and sets the checksum of a kickstart image. The specified
- locations are checked to represent a valid kickstart image, and the size
- of it is determined (256/512 KB). The previous and the new checksums
- are returned.
-
- megasum addr
- calculates and sets the checksum of a SEGA Megadrive ROM image. The
- specified locations are checked to represent a valid ROM image. The
- previous and the new checksums are returned.
-
- famisum addr
- calculates and sets the checksum of a SNES (Super Famicon) ROM image.
- The specified locations are checked to represent a valid ROM image. The
- previous and the new checksums are returned. Additional module
- information ist reported.
-
- famiplay addr
- transfers the datablock beginning with the specified location to a
- Super Magic Drive copier unit connected the parallel port, if it passes
- an integrity check. If the unit does not respond in time, a timeout
- error is reported. During transfer the current address and the number
- of blocks to go is shown. The transfer can be aborted using the escape
- key. The datablock represents a SNES (super Famicon) module with Super
- Magic Drive header and organisation. Refer to the section near the end for
- information on the supported cable wiring.
-
- smdplay addr
- transfers the datablock beginning with the specified location to a
- Super Magic Drive copier unit connected the parallel port, if it passes
- an integrity check. If the unit does not respond in time, a timeout
- error is reported. During transfer the current address and the number
- of blocks to go is shown. The transfer can be aborted using the escape
- key. The datablock represents a SEGA Megadrive module with Super Magic
- Drive header and organisation. Refer to the section near the end for
- information on the supported cable wiring.
-
- rawplay addr
- transfers the datablock beginning with the specified location to a
- Super Magic Drive copier unit connected the parallel port, if it passes
- an integrity check. If the unit does not respond in time, a timeout
- error is reported. During transfer the current address and the number
- of blocks to go is shown. The transfer can be aborted using the escape
- key. The datablock represents a SEGA Megadrive module in raw binary
- format without any headers. Refer to the section near the end for
- information on the supported cable wiring.
-
- smd2raw addr
- converts the specified datablock in Super Magic Drive format into raw
- binary format, if it passes an integrity check. During conversion the
- current address and the number of blocks to go is shown. The resulting
- data starts with addr and ends with addr+modulesize followed by $200
- bytes of memory filled with $55.
-
- v <sync>
- changes the syncword for all disk file and track operations to the
- specified value. The value is checked for consistency and invalid syncs
- are noted, but not ignored. If no parameter is specified the current
- syncword setting is returned.
-
- vc <track>
- tries to find out the sync marks on the specified track of the
- selected drive, or on track 0, if no track is specified.
- (NOTE: this function needs major rework...)
-
- l addr cyl <num>
- reads the specified number of AmigaDOS cylinders to the specified
- memory locations from the selected diskdrive beginning with cylinder
- "cyl". If no parameter "num" is specified only one cylinder will be
- read. Note the difference between cylinders and tracks: a disk
- contains 83 cylinders and 166 tracks. The length of one cylinder is
- 2 sides * 11 sectors * $200 bytes = $2c00 bytes in DD mode and
- 2 sides * 22 sectors * $200 bytes = $5800 bytes in HD mode. While
- reading tracks a list is displayed reporting which cylinder, head and
- sector has just been read to which address. If there is an error which
- couldn't be recovered with upto three internal retries for each sector,
- the user may select between retry, ignore and abort to handle this
- situation.
-
- s addr cyl <num>
- writes cylinders to the selected diskdrive.
-
- l addr sec <num> s
- reads the specified number of AmigaDOS sectors to the specified
- memory locations from the selected diskdrive beginning with sector
- "sec". If no parameter "num" is specified only one sector will be read.
-
- s addr sec <num> s
- writes sectors to the selected diskdrive.
-
- L filename addr
- loads an AmigaDOS file named "filename" and located in the current
- directory to the specified address "addr". The filename can be quoted
- to include spaces. If the disk has been changed, the current directory
- is set to the root directory. While loading the current loadaddress is
- displayed. If there is any error a corresponding message is returned.
- Both OFS and FFS disks are supported. The OS2.0 link-feature is
- supported, too.
-
- S filename addr1 addr2
- saves an AmigaDOS file named "filename" into the current direcory.
- Saving begins with "addr1" and ends with "addr2"-1. If there is not
- enough free space on the current disk, the operation is aborted. While
- saving the current saveaddress is displayed. If there is any error a
- corresponding message is returned. The time and date information is
- set, if there is a clockchip (either A500/A2000 or A3000/A4000 version)
- installed and the chip appears functional. Otherwise the the creation
- time is reset to 00:00:00 on 01-Jan-78.
-
- type filename
- types an AmigaDOS file named "filename" located in the current
- directory onto the screen. The filename can be quoted to include
- spaces. If the disk has been changed, the current directory is set to
- the root directory. If a line feed character ($0A) occurs within
- the file, the cursor is put into the first column of the next line.
- If there is any error a corresponding message is returned.
-
- cd :
- sets the root directory as the current directory.
-
- cd subdir
- sets the specified subdirectory named "subdir" as the current
- directory. This is only valid for the disk which is currently installed
- in the selected diskdrive. Before any file- or dosoperation is done
- with a changed disk the current directory is reset to the rootdirectory.
- The OS2.0 link-feature is supported, too.
-
- mk subdir
- creates a subdirectory named "subdir" in the current directory of the
- selected diskdrive.
-
- del "name"
- deletes a file named "name" and being located in the current
- directory of the selected diskdrive. If "name" is a subdirectory it is
- also deleted if it has been empty. Linked files and directories are
- handled correctly.
-
- M
- returns the block allocation map of an AmigaDOS disk inserted in the
- current diskdrive. A filled squar indicates that a sector is currently
- allocated and in use. The upper part represents head 0 with sectors
- incrementing from 0 to 10 in DD mode and from 0 to 21 in HD mode, while
- the lower part represents head 1.
-
- info
- reports the drivemode (DD or HD). The sector of the bitmap is also
- displayed and if the disk is validated or not. No writing fileoperation
- can be performed without a validated disk. The type of the filesystem
- is reported, too (DOSType, OFS or FFS and non international or
- international). In addition, the number of free bytes is reported.
-
- verify
- toggles disk verification. If switched on, any track written to disk
- will be checked for write errors. If there is an error, the user may
- select between retry, ignore and abort to handle this situation.
-
- format "name" <q> <0/1/2/3>
- initialises the disk in the selected drive. No verification is done.
- If the option q is specified, only the boot- and root-tracks are
- formatted. The disk won't be installed. If no third parameter is
- given, the disk is initialised as a standard OFS disk, otherwise the
- parameter selects the filesystem between:
- 0: non international OldFilingSystem (DOSType DOS\0)
- 1: non international FastFilingSystem (DOSType DOS\1)
- 2: international OldFilingSystem (DOSType DOS\2)
- 3: international FastFilingSystem (DOSType DOS\3)
- The default '0' is readable with any version of AmigaDOS. All other
- filing systems need OS2.0 to be recognised as a valid disk outside the
- BeerMon. A HD disk inserted in a Chinon FB357A HD diskdrive will be
- formatted with 3520 sectors representing 1.76 MB.
-
-
- install <0/1/2/3/4>
- installs the disk in the selected drive. If no parameter is
- specified, a WB2.x bootblock is installed, whose DOSType is determined
- by examining the DOSType entry of the previous bootblock. If this entry
- is invalid, the disk is rejected. The previous bootblock is ignored, if
- the optional parameter is specified, which selects between:
- 0: non international OldFilingSystem (DOSType DOS\0) WB2.x
- 1: non international FastFilingSystem (DOSType DOS\1) WB2.x
- 2: international OldFilingSystem (DOSType DOS\2) WB2.x
- 3: international FastFilingSystem (DOSType DOS\3) WB2.x
- 4: non international OldFilingSystem (DOSType DOS\0) WB1.3
- The last version is rather antique and should only be used if you have
- to ensure that the CLI screen is opened early, when using OS2.0. Take
- care not to change the filesystem of a disk already containing files, or
- they are likely to become unreadable . Use the 'M' command to find out
- the type of such a disk.
-
- cls
- clears the screen.
-
- time
- returns the current time and date, if there is a clockchip located at
- the ususal location (either A500/A2000 or A3000/A4000 version).
-
- / [0..9]
- returns info on several system structures.
- Needs some rework.
-
- cop <addr1 addr2>
- searches for a valid copper instruction list beginning with "addr1"
- and ending with "addr2"-1. If no parameter is specified, the whole chip
- memory area is scanned. If a copperlist is considered valid, the start
- and end address of this area is reported.
-
- V <addr1> <addr2>
- disassembles the copperinstructions at the memory locations beginning
- with "addr1" and ending with "addr2"-1, if they are specified. The
- disassembly includes symbolic register names and can be edited using the
- cursor. If no valid instruction is given the line is not accepted and
- not altered in memory. The new ECS and AGA registers are handled, too.
- Examples of valid instructions:
- -Move #$8201,BplCon0 -dc.l $1800fff
- -EndList -Wait $0c,$00,1,$7f,$7f
- -Skip $0c,$00,1,$7f,$7f
-
- custom
- displays a table with name and the corresponding address of each
- custom chip register. The new ECS and AGA registers are handled, too.
- If the screen is filled, you can advance to the next page by pressing
- the right mouse button. The command can be aborted by pressing the
- escape key.
-
- h start end <addr> <jmp>
- generates an object module including the data beginning with "start"
- and ending with "end"-1. A code transfer routine is added using the
- destination address "addr" or the parameter "start" if it is not
- specified. The program is executed using the parameter "jmp" or the
- parameter "start" if it is not specified. The transfer routine disables
- DMA transfer, changes interrupt masks and flags and loads the active
- stackpointer (which mostly is the USP) with the value $80000. The
- generated module may (and should) be edited according to your needs
- before being saved to disk.
-
- b <addr>
- shows memory locations beginning with "addr" in form of a bitmap.
- Moving the mouse up increases the startaddress. The right mousebutton
- toggles between Medres and Lores screenresolution. The escape key exits
- the bitplane display. This is no IFF-searcher and is only intended to
- get a quick overview about memory contents such as free space, code,
- diskbuffers, bitplanes, bobs or sounddata. The memory locations need
- not to be in chipmemory but may be any valid memory location below
- $c80000. You may also display memory locations beginning with $f00000.
- Take care of not displaying any locations without ram installed such
- e.g. $b00000.
-
- P
- toggles printer output. If a printer is connected to the centronics
- port and online. Any text output is both displayed on the screen and
- sent to the printer if this function is enabled.
-
- k
- toggles the current keymap between german keymap and usa keymap. As
- a default setting the german keymap is used.
-
- config
- performs an autoconfig procedure for Zorro-II and Zorro-III
- expansions inside the lower 16MB address space. This enables you to use
- Zorro type RAM-expansions (e.g. at $200000) after you entered the
- module via reset (CTRL-A-A) or you performed the MC680x0
- RESET-instruction.
-
- *****************************************************************************
- The supported Super Magic Drive cable wiring:
-
- Amiga Parallel Port Super Magic Drive
- D0 2 ---------------------- 2 D0
- D1 3 ---------------------- 3 D1
- D2 4 ---------------------- 4 D2
- D3 5 ---------------------- 5 D3
- D4 6 ---------------------- 6 D4
- D5 7 ---------------------- 7 D5
- D6 8 ---------------------- 8 D6
- D7 9 ---------------------- 9 D7
- GND 17 ---------------------- 17 GND
- BUSY 11 ---------------------- 11 BUSY
- SEL 13 ---------------------- 1 STROBE
-
-
- *** So that's all, share, spread and enjoy the word and also the disk.
- Greetings rush out to my friends around in TRSI, ESCape, the incredible
- FakeBuster, CodX, SMF, PBA, Kelly van Vliet and anybody elso who has been
- involved, or just deserves it. I also raise my chalice to the unnamed and
- faceless ones who share my blood and speak my name...Shemhamforash!
-
- signed: Carnivore/BeerMacht 18.06.1993
-